package cn.hyatt.auth.service;

import cn.hyatt.auth.dto.auth.AuthInfo;
import cn.hyatt.auth.dto.auth.UserInfo;
import cn.hyatt.auth.dto.auth.UsernameLoginRequest;
import cn.hyatt.auth.dto.auth.VueRouter;
import jakarta.servlet.http.HttpServletRequest;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;

/**
 * 认证-服务接口
 *
 * @author hyatt
 */
public interface AuthService {
    /**
     * 用户名 登录
     *
     * @param request      Http请求
     * @param loginRequest 登录请求
     * @return 结果
     */
    AuthInfo usernameLogin(HttpServletRequest request, UsernameLoginRequest loginRequest);

    /**
     * 注销
     */
    void logout();


    /**
     * 刷新认证
     *
     * @return 结果
     */
    AuthInfo refreshAuth(HttpServletRequest request);

    /**
     * 获取 Base 64 验证码
     *
     * @return 结果
     */
    String getBase64Captcha(HttpServletRequest request) throws IOException;

    /**
     * 创建验证码图像输出流
     *
     * @return 结果
     * @throws IOException IO异常
     */
    ByteArrayOutputStream createCaptchaImageOutputStream(HttpServletRequest request) throws IOException;

    /**
     * 获取用户信息
     * @param userId 用户Id
     * @return 结果
     */
    UserInfo getUserInfo(Long userId);


    /**
     * 获取路由信息
     * @param userId 用户Id
     * @return 结果
     */
    List<VueRouter> getRouters(Long userId);
}
